Copyright: ® Dave Mikelson 1994


NULL_NO_DFN
null (no extension) - To cause files with no extension to be printed using your custom comment identifiers, delete the contents of the File Extension box or enter a single period.


EXTENSIONS_THAT_DFN
extensions that are already supported -

.ASM	Assembler source code

.BAS	Basic source code

.C	C source code

.CBL	Cobol source code

CPP	C++ source code

.FOR	Fortran source code

.H	C, C++ include files

.INC	Pascal include files

.LSP	Lisp source code

.PAS	Pascal source code

.POV	Persistence of Vision Scene Files

.PRG 	Clipper source code

.???	User Defined

Also see User Defined Comments


WILD_CARD_DFN
wild card characters - An asterisk or question mark can be used to match one or more characters in a file extension.  DOS wild card conventions apply.

matches	does not match
.*	.A, .AB, .ABC
.A*	.A, .AB, .ABC	..B, .BC
.?	.A	.AB, .ABC
.??	.A, .AB	.ABC
.??C	.ABC, .XYC	.A, .AB, .AC
.A?	.A, .AB	.B, .ABC


FILE_LIST_DFN
File List - Shows the files that will be printed.  The content of the file list remains intact after the files are printed.  However, selecting new files resets the list before the new files are added.  That is, the new files are not appended to the list.

During printing, the top of the file list shows the file that is currently being printed.


FONT_CELL_DFN
font cell - An imaginary grid in which a particular character is drawn.

In a fixed-width font, all font cells are the same size.  A lower case 'i' has the same width as an upper case 'D'.  If the cell width for a particular fixed-width font is 8, then the string "DiD" will be 24 units wide.

In a proportional or variable-width font, an upper case 'D' might have a width of 9, and a lower case 'i' might have a width of 4.  The string "DiD" is then only 22 units wide.


ORIENTATION_DFN
orientation - determines whether Source Printer uses Portrait mode or Landscape mode.  You can change this by selecting Files - Print Setup from the main menu.

Portrait mode prints with the short side of the paper at the top.

Landscape mode prints with the long side of the paper at the top.


PRINT_QUALITY_DFN
print quality -
Depending on the type of printer currently selected, this may be 'Draft' or 'Letter Quality' or a resolution like 75, 180, or 360 DPI (dots per inch).

In the case of DPI, choosing a higher DPI generally gives nicer printouts and may allow Code Printer to more closely match your requested character sizes.  However, you must ensure that your printer (especially if a laser) has sufficient memory to handle the higher resolution.


FILE_MANAGER_DFN
File Manager - A file management program supplied as part of Windows.  File Manager supports drag and drop.


DRAG_AND_DFN
Drag and Drop -
The ability to select several files from a Drag and Drop aware program (like File Manager) and drag them over another program by holding the left mouse button down.  When the left mouse button is released, the files are dropped into the other program, and that program then processes those files.


HS_DESC
Clipboard Description - The entry here takes the place of the filename when printing Headers and Footers.  This entry also appears in the file list in the main window.

If this entry is  left blank, the string "From Clipboard" is used.


HS_FORMAT
Clipboard Format - Source Printer usually uses the file extension to determine how to interpret the code.   Since that information is not available when printing from the clipboard, you must let Source Printer know which language the text in the Clipboard is from.

To print the clipboard with no formatting, select 'Generic text / other', and the Clipboard will be printed entirely in the font selected for 'normal code'.


VISIBILITY_DFN
visibility - Determines whether Source Printer remains visible on the screen even though it may not be the active task.


WHITE_SPACE_DFN
white space - spaces or tabs.


CLEAR_FILE_DFN
Clear File List - This button clears the file list.  It is enabled if the Clear File List Automatically option has not been set.  Otherwise, this button is disabled.


BWCCDLL_DFN
BWCC.DLL - The version of BWCC.DLL shipped with this copy of Source Printer is v2.00.  The file date is 21 October 1993 and the file size is 156,544 bytes.

A copy of BWCC.DLL needs to exist in your Windows system subdirectory (like C:\WINDOWS\SYSTEM).  Use the BWCC.DLL on the Source Printer disk only if a version you already have is earlier.  Note that only one copy of BWCC.DLL should be on you system at a time.

(BWCC.DLL is part of Borland Windows Custom Controls - (C) Copyright 1991-1993 by Borland International.)


ALLOW_FIXED_DFN
Allow Fixed Pitch Only - When this box is checked, only fixed-pitch fonts that are installed on your system will be listed when you bring up the Change Font dialog box.  See Fixed vs. Variable Pitch Fonts for more information and recommendations.


FONTS_INSTALLED_DFN
fonts installed - Windows has several built in fonts.  Additional fonts can be installed on your system using the Windows' Control Panel.


FONT_SUMMARY_DFN
Font Summary Dialog -


FILE_SELECTION_DFN
File Selection Dialog -


CLIPBOARD_FORMAT_DFN
Clipboard Format Dialog -


MARGINS_DIALOG_DFN
Margins Dialog  -


HEADERS_AND_DFN
Headers and Footers Dialog  -


PREFERENCES_DIALOG_DFN
Preferences Dialog -


USER_DEFINED_DFN
User Defined Comments Dialog  -


Upgrading Source Printer

Prices below will be valid until 1 July 1995.

If you are a registered user and have access to Compuserve, upgrades are free.

The latest version of Source Printer should always be available through Compuserve in the ‘Microsoft Windows Shareware Forum’ (GO WINSHARE) in the ‘Programming Related’ library.  Look for a file called SRCPRNXX.ZIP, where XX will indicate the version number (10 means 1.0).

Note that you cannot upgrade through Compuserve's Shareware Registration Service (SWREG).  SWREG is for initial registration only.

The latest version as of 17 September 1994 is version 1.0, and is distributed as SRCPRN10.ZIP.

Registered users will be able to use their registration number to unlock all future versions.

You cannot upgrade through the Compuserve Shareware Registration Service (SWREG) or by credit card.

If you are a registered user and know that a later version than the one you have exists but do not have access to Compuserve, then:

Registered users can receive an upgrade disk for US$ 2.00.  You must send a check to me directly.  Include your registration name and number on all correspondence. (see Order Form).

Please read:

Distributing Source Printer

How to Report Problems

About the Unregistered Version

How To Register

Order Form

Disclaimer - Agreement

Contacting the Author

Contents


Introduction

Welcome to Source Printer  Copyright 1994 David J. Mikelson

Source Printer was written by David J. Mikelson.

This is version 1.0 (17 Sept 94).

Source Printer prints your source code so that it is easier to read and follow.  It does this by:

Allowing you to specify different fonts for normal and commented code

Expanding tabs properly

Intelligently indenting and word wrapping each line when required

Intelligently aligning columns and blocks of code

Printing headers and/or footers if requested

Source Printer can interpret comments for a number of programming languages.  In addition, you can specify a user defined comment format to handle almost any programming language not supported.

Source Printer allows you to specify margins, tabstops, character spacing, and line spacing. It can print text from Window's Clipboard, and supports 'Drag and Drop' onto either its icon or main window.

See Installation and Quick Start to get up and running right now, or view the Contents for details.


Quick Start

To print something with Source Printer right now:

If you have not already done so, install Source Printer.

When you run Source Printer for the very first time, the various settings suggested below will have already been selected by default.  Any of the settings below can be changed later.  Any changes will be automatically saved for your next Source Printer session. For the Quick-Start, just use the ones suggested.

See Supported Languages and File Extensions for a list of the programming languages that Source Printer supports.  Source Printer uses the file extension of your source code to determine how to interpret comments.

Double click on SRCPRN10.EXE from File Manager,  use File - Run from Program Manager, or, if you have installed a Source Printer icon in Program Manager, double click on that.

Click on the Select Files  button on Source Printer's main window.  This brings up a file selection dialog box from which you select one or more source code files to place in the file list on Source Printer's main window for printing.   Hold the Ctrl key down while clicking on the file names to select more than one file.

Select Format - Fonts from the main menu.  Place a check-mark in the 'Allow Fixed pitch only' box.  Set the Line Spacing to 1.0.  Set the Char Spacing to 1.0.  Click on the Change normal code font button and select Courier New, 10 pt, Regular.  Click on the Change commented code font button and select Courier New, 10 pt, Bold.

Select Format - Header/Footer from the main menu.  Place check-marks in Number Pages, Bottom, Right.  Place check-marks in Print Filename, Top, Left.  Place check-marks in Print Date, Top, Right.  Select Use Today's Date.  Place check-marks in Header separator and Footer separator.

Select Format - Margins/Tabs from the main menu.  Set all margins to 1.0 inch, but make sure these are larger than the minimum margins that will be shown for your printer.  Set the tab stops to 3.

The current page orientation (Portrait or Landscape) is shown in Source Printer's main window.  To change this, select File - Print Setup from the main menu.  When Source Printer first starts up, it configures itself to use the default printer you have specified through Windows' Control Panel.

Click the Print button.

Now read some more of this help file to learn more about some of Source Printer's features.


Disclaimer - Agreement

Prices below will be valid until 1 July 1995.

Users of Source Printer must accept this disclaimer of warranty:

Source Printer is supplied as is.  The author disclaims all warranties, expressed or implied, including, without limitation, the warranties of merchantability and of fitness for any purpose.  The author assumes no liability for damages, direct or consequential, which may result from the use of Source Printer.

Source Printer is a 'shareware program' and is provided at no charge to the user for evaluation.  Feel free to share the unregistered version with your friends, but please do not give it away altered or as part of another system.  The essence of 'user-supported' software is to provide personal computer users with quality software without high prices, and yet to provide incentive for programmers to continue to develop new products.

If you wish to register Source Printer, make a registration payment of US$ 10.00 (or US$ 15.00 if ordering through PsL) to David J. Mikelson (see How To Register).  The registration fee will license one copy for use on any one computer at any one time.  You must treat this software just like a book.  An example is that this software may be used by any number of people and may be freely moved from one computer location to another, so long as there is no possibility of it being used at one location while it’s being used at another.  Just as a book cannot be read by two different persons at the same time.

Site-License arrangements may be made by contacting David J. Mikelson.

Anyone distributing Source Printer for any kind of renumeration must first contact David J. Mikelson at the address given on the Order Form for authorization.

You are encouraged to pass unregistered trial copies of Source Printer along to your friends for evaluation.  Please encourage them to register their copy if they find that they can use it.

Please read:

Contacting the Author

Upgrading

Distributing Source Printer

How to Report Problems

About the Unregistered Version

How To Register

Order Form

Contents


Contents

Startup

Introduction

Installation

Quick Start

About Comments In General

Supported Languages and File Extensions

Using Source Printer

The Main Window

Menu Commands

Administration

Registering Source Printer

How To Get Context Sensitive Help

Trouble Shooting, Known Problems, and Limitations

Uninstalling Source Printer

About Source Printer


Distributing Source Printer

You are encouraged to pass unregistered trial copies of Source Printer along to your friends for evaluation.  If you do so, you must provide them with the entire set of Source Printer files:

SRCPRN10.EXE

SRCPRN10.HLP

README.TXT

ORDERFRM.TXT

FINDBWCC.EXE

BWCC.DLL

FILE_ID.DIZ

Please read:

How to Report Problems

About the Unregistered Version

How To Register

Order Form

Disclaimer - Agreement

Contacting the Author

Upgrading

Contents


Menu Commands

File

Select

Print Setup

Exit

Format

Fonts

Header/Footer

Margins/Tabs

Options

User Defined Comments

Preferences

Contents


Supported Languages and File Extensions

Source Printer uses the extension of the file being processed to determine which programming language the file represents and how it should interpret comments.  Below is a list of supported languages and file extensions.  For details on how Source Printer interprets comments for each language, click on the file extension of interest.

If you select a file with an extension that is not recognized by Source Printer (and does not have a User Defined Comment format), Source Printer will warn you (before printing) that the extension is unknown.  If you choose to continue, the document will be printed using only the font chosen for 'normal' un-commented code.

If your particular programming language is not listed, or if you use different file extensions for one of the supported languages, or if your compiler package uses slightly different comment formats, see User Defined Comments.

Note:  Source Printer does not recognize hard page breaks (ASCII 12 - form feed).  If it encounters one, it warns you (once per file) and will print a single space character (ASCII 32) in its place.

Languages Supported

.ASM	Assembler source code

.BAS	Basic source code

.C	C source code

.CBL	Cobol source code

CPP	C++ source code

.FOR	Fortran source code

.H	C, C++ include files

.INC	Pascal include files

.LSP	Lisp source code

.PAS	Pascal source code

.POV	Persistence of Vision Scene Files

.PRG 	Clipper source code

.???	User Defined

See also:

About Comments in General

User Defined Comments

Contents


Comments in General
About Comments in General

Two types of comments are generally allowed in most programming languages:  Single-line comments and Block comments.

Furthermore, some languages allow comments to be 'nested'.

Note that all examples below use the C language comment identifiers which are as follows:

     Single-line comment identifier	//

     Start block comment	/*

     End block comment	*/

Single line comments start with a unique identifier ( a single character or a character string) and then continue from the identifier to the end of the line in which the identifier was encountered.  In general, single-line comments can start anywhere on a line.

Block comments usually involve two unique identifiers - one to signal the start of a block and one to signal the end of the block.  Block comments can span several lines (end-of-line characters do not signal the end of a block comment).  Both the starting identifier and the ending identifier can occur anywhere in any line.

Nested comments result from enclosing one or more commented sections within a pair of block comment identifiers.  Source Printer treats nested comments correctly even though your particular compiler may not support nested comments.

Example:

This line contains a // single line comment

This line is normal

// This whole line is commented out

This line is normal

A block comment /* is started in this line

and continues through

the next lines */ and so on.

This line is normal

/* This section of

code is // commented out

and shows /* an example */

of nested */ comments

Several precautions need to be taken when mixing single-line, block, and nested comments.  (Chances are that if you have successfully compiled the source code  you are printing with Source Printer, then Source Printer will correctly interpret your comments because your compiler will have already alerted you to ambiguous comment formatting).

The most common error is to start a block comment on the same line as and after a single-line comment identifier.  When tracking block comments, Source Printer counts the pairs of block-start and block-end identifiers.  However, for the purposes of counting, Source Printer ignores all characters that occur after a single line comment identifier, so never 'sees' the start-block identifier.

Example:

This code // would print /* incorrectly

because the start block identifier is never seen */

Problems may also arise if you use Source Printer's user-defined comments and  specify a single-line comment identifier that is the same as one of the block comment identifiers.  This will almost certainly cause Source Printer to loose track of any block comments.  Similar things would happen if the start-block and end-block identifiers were the same.

Source Printer generally treats mixing character strings (double quotes) and comment identifiers correctly.  If a comment has not been started, and if a comment identifier happens to be included in a character string, that comment identifier will be ignored.  If a comment has been started, then any double quotes in the comment will be ignored.

Example:

Ignore "any /* comment identifiers */ inside quotes" // Comment

Ignore any /* quotes "inside */  a " comment.

Note that the above quote-comment identifier logic is not implemented in Assembler, Fortran, Cobol, or User Defined Comments.

See Also:

   Supported Languages and File Extensions

   User Defined Comments

   Contents


The Main Window

This is Source Printer's main window:  Click on an area of interest.

You can force Source Printer's window or icon to always be on top of other windows by choosing Options-Preferences from the main menu.  This is useful when taking advantage of the drag-and-drop features, or if you want to have Source Printer's main window or icon readily available on your desktop.

See also:

   Quick Start

   Contents

   Supported Languages and File Extensions

   About Comments In General

   Menu Commands


Selecting Files

Files to be printed are always displayed in the file list on the main window. The file list also indicates whether a clip from the Clipboard is to be printed (or has already been printed).

Source Printer remembers which files were in the file list when you last exited Source Printer.  Any files that were in the file list when you last exited Source Printer will be automatically added to the file list when Source Printer is started again.  One exception to this is if you enter file names on the command line when you start Source Printer.  In this case, the command line files have precedence, and only they will appear.

There are a number of ways to place files in the file list:

Pressing the Select Files button on the main window or choosing File-Select from the main menu

Dragging and dropping from File Manager

Entering files names on the command line when you start the program

Getting a clip from the Clipboard

Associating Source Printer with a particular file extension

Pressing the Select Files button or choosing File - Select from the main menu brings up a file selection dialog box.  You can traverse drives and subdirectories, and you can select a default file extension so only files with a certain extension are listed.

To select multiple files from one subdirectory, hold down the Ctrl key and click on each file name you wish to print.  Alternatively, you can use the Shift key to select a block of files.  Note: Although very unlikely, do not select more than about 100 files at a time (there is a restriction in the Windows operating system).

If you have set Clear File List Automatically in the Options-Preferences dialog box, then the file list will be cleared every time you add anything new to it.  In this case, the Clear File List button on the main window will be disabled.

You may find it more useful not to set the Clear File List Automatically option.  This way, files will be appended to the file list until you press the Clear File List button.  Unless you enter file names at the command line, this is the only way to print a batch of files from more than one subdirectory.

If you attempt to add a duplicate filename to the file list, it will not be added unless it has a different path.

See The File List and Using The Clipboard topic for a description of how clips from the Clipboard are treated.

See also:

   Contents

   Using Drag and Drop

   Entering Filenames on the Command Line

   Using the Clipboard

   Clearing the File List


Lines Longer Than 500 Characters

This error means that Source Printer read more than 500 characters before it encountered a carriage return.

There are two main causes for this:

1)

The file may not be a text file.  That is, it may be a binary file.  This error would occur for example, if you accidentally tried to print an executable file (.EXE).

2)

The file may have been saved from a word processor that automatically wraps lines in a paragraph to fit between margins.

Most word processors designed for program editing, and simple editors, might wrap lines (using a menu option like Paragraph - Reformat), but they do this by inserting hard carriage returns at the end of each line.

'Pure' word processors (like Microsoft Word for Windows), often treat a whole paragraph as one long line.  Carriage returns only occur to mark the end of a paragraph.  Thus, if a paragraph is more than 500 characters, you will see this error message.

Note also that some word processors save large amounts of formatting and page setup data at the start of the file.  This is often binary-type data and will cause similar problems.

I did not consider this second cause to be very likely, as most programmers use simple editors or editors designed for programming, and these types of editors usually insert carriage returns in the right places (probably because most compilers look for carriage returns just like Source Printer does).

If you must use a 'pure' word processor, a fix would be to Save As something like 'text only with line breaks'.


Association Source Printer With File Extensions
Associating Source Printer With File Extensions

The Windows' File Manager allow you to associate files with a certain extensions with particular executable files.  When you double click on a file with an extension that has been associated with an executable, that executable starts up and automatically loads the file that you double clicked on.  Source Printer supports this facility.

Using the C language as an example, you can associate all .C source files with Source Printer by selecting File-Associate from File Manager's main menu and filling in the dialog as follows:

To print the .C source file with Source Printer, double click on the .C file in File Manager.  Source Printer will start and your .C will appear in the file list.  Press Source Printer's Print button to print the file.

See also:

Contents


Using Drag and Drop to Select Files

You can drag one or more files from  File Manager and drop them onto either Source Printer's icon (if minimized) or Source Printer's main window (if maximized).  The files dragged will be added to Source Printer's file list.

To drag files from File Manager to Source Printer, both File Manager and Source Printer must  be visible on the screen at the same time.  See Preferences (Always visible..) for an easy way to cause this to happen.

To drag more than one file at a time, hold the Ctrl key down and click on each file in File Manager's directory window that you want to drag.  Alternatively, you can hold the shift key down and select a block of files.  Then, while holding the left mouse button down, drag the files over Source Printer's icon or main window and release the left mouse button.  If the Clear File List Automatically option is not selected, the files will be appended to the file list.  Otherwise, the file list will be cleared before adding the files.

See also

   Contents

   Selecting Files Manually

   Entering Filenames on the Command Line

   Using the Clipboard

   Preferences (Always visible...)

   Contents


Entering Your Registration Data

From Source Printer's main menu, select Register - Enter Registration Data or press the Enter Registration Data button on one of the 'Beg' notices.

Type in your name exactly as shown on your registration card including case, punctuation, and spaces.

Type in your registration number.

Press OK.

See also:

Order Form

Disclaimer - Agreement

Contacting the Author

Upgrading

Distributing Source Printer

How to Report Problems

About the Unregistered Version

How To Register

Contents


The File List

The batch of files to be printed is always displayed in the file list on the main window. The file list also indicates whether a clip from the Clipboard is to be printed (or has already been printed).

See Selecting Files for various ways to add files to the file list.

Source Printer remembers which files were in the file list when you last exited Source Printer.  Any files that were in the file list when you last exited Source Printer will be automatically added to the file list when Source Printer is started again.  The one exception to this is if you enter file names on the command line when you start Source Printer.  In this case, the command line files have precedence, and only they will appear.

If you have set Clear File List Automatically in the Options-Preferences dialog box, then the file list will be cleared every time you add anything new to it.  In this case, the Clear File List button on the main window will be disabled.

You may find it more useful not to set the Clear File List Automatically option.  This way, files will be appended to the file list until you press the Clear File List button.  Unless you enter file names at the command line, this is the only way to print a batch of files from more than one subdirectory.

If you attempt to add a duplicate filename to the file list, it will not be added unless it has a different path.

When an item from the Clipboard is added to the file list, the file list will display the item as follows:

If no description was entered in the Get Clip dialog box, then the string "From Clipboard" is used as a pseudo file name.  Otherwise, your description is used as a pseudo file name.  This is the name that will be used in any Header or Footer.

For the purposes of display in the file list only, the string "Rtrvd" (short for 'retrieved') is appended to the pseudo file name, along with the time it was retrieved.

Once the Clip has been printed, the "Rtrvd" is replaced with "Prntd" (short for 'printed'), and the retrieved time is replaced with the time the clip was printed.

See also:

   Contents

   Selecting Files

   Using Drag and Drop

   Entering Filenames on the Command Line

   Using the Clipboard

   Clearing the File List


Font Related Printed Error

Summary

During testing, it has been found that some fonts cause some laser printers to fail in the middle of printing a long document.  The printer error is usually misinterpreted by Print Manager, which reports an 'out of paper or printer off-line' message.

The problem does not seem to arise with dot matrix printers.

A quick fix, though admittedly, one that more or less defeats the purpose of the Fonts option, is to set up the font dialog box as follows:

Font	Courier New

Size	8, 10, or 12 point

Weight	Normal for normal code

Bold for commented code

Line Spacing 	1.0

Character Spacing	1.0

This setup is actually the one I prefer to use anyway, and no printer errors have been experienced with it.

Technical Details

The exact cause of this problem and the programming solution still eludes me despite much research.

The following points seem to be relevant:

When Windows prints to a printer, it will first interrogate the printer (printer driver) to see if the printer has any built in fonts that closely match the font that the user has specified in a document.

If a good match is found, Windows can print a page of text by sending the printer a minimum of information (more or less just the ASCII codes for each character).  This results in, very approximately, one byte of data per character, or perhaps 5000 bytes per page.  (Most printers can match the Courier New Font when the Character Spacing is 1.0).

If the font is not supported by the printer (like very stylized fonts, or fonts with a character spacing factor not equal to 1.0), then Windows sends each character as a bitmap, which takes many more bytes of data per character.  It can require hundreds of thousands of bytes per page. (This can be verified by looking at the sizes of the temporary spooler files Print Manager creates during printing).

It is suspected that sending these large chunks of data somehow overloads the printer memory.  It is suspected, but not verified, that the memory problem manifests itself more with older laser printers (and drivers) and/or laser printers with relatively small amounts of onboard memory (say < 2 Mb).

Laser printer drivers are supposed to do something called "banding", which eliminates the need for the printer to hold the entire page in memory before printing (it essentially prints one section, then retrieves more data and prints the next section - like a dot-matrix printer).  However, whether its the drivers or my programming (banding is very poorly documented), I have not been able to resolve this problem, though I will continue to work on it.

See Also:

Contents

Selecting Fonts

Line Spacing

Character Spacing

Margins

TabstopsTrouble

Trouble Shooting, Known Problems, and Limitations


Entering Filenames at the Command Line

If desired, you can enter filenames on the command line when you start Source Printer.  Then, when Source Printer starts up, those files will be automatically added to the file list.  To use this option efficiently, it is best if you have a Source Printer program item (Icon) installed in Program Manager.

Here is just one way to do this (see your Window's manual for others):

This example will place a Source Printer icon in a new Source Printer group, and will cause the files C:\MYPROJ\ONE.C and C:\SUPPORT\TWO.C to be added to Source Printer's file list automatically when Source Printer runs.

Let's assume that SRCPRN10.EXE is in your C:\SP subdirectory.

From Program Manager's main menu, select File - New.  Select Program Group and press OK.  Type "Source Printer" (without quotes) for the Description.  Leave the Group File box blank.  Press OK.  This creates an empty program group called Source Printer.  It will be created active (its title bar will be highlighted).

Make sure the Source Printer group is highlighted.

Select File - New from Program Manager's main menu.  Select Program Item and press OK.  Type "Source Printer" (without quotes) in the Description box.  Type "C:\SP\SRCPRN10.EXE  C:\MYPROJ\ONE.C  C:\SUPPORT\TWO.C" (without quotes) in the Command Line box.  Type "C:\SP" (without quotes) in the Working Directory box.  Leave the Short Cut Keys as None.  Click OK.

Note:  Wildcard characters are not allowed on the command line.  There must be at least one space in between file names on the command line.  Source Printer allows the command line to be up to 2000 characters long.  However, Windows may impose other limitations.

If you don't supply the full path name for the files, Source Printer will search:

The current directory

The main Windows directory

The Windows system subdirectory

The directory from where you started Source Printer

The directories in your PATH

In that order.

Source Printer remembers which files were in the file list when you last exited Source Printer.  Any files that were in the file list when you last exited Source Printer will be automatically added to the file list when Source Printer is started again.  The one exception to this is if you enter file names on the command line when you start Source Printer.  In this case, the command line files have precedence, and only they will appear.

See Also:

   Contents

   Selecting Files

   Using Drag and Drop

   Entering Filenames on the Command Line

   Using the Clipboard

   The File List


Using the Clipboard

You can place text into Window's Clipboard and print it with Source Printer.  In many Window's applications, you place text in the Clipboard by highlighting a section and selecting Edit-Copy from the application's main menu.

Once there is text in the Clipboard, click the 'Get Clip' button on Source Printer's main window.  If there is no printable text in the Clipboard, Source Printer will issue a warning.

Source Printer usually uses file extensions to determine how to interpret the code.   Since that information is not available when retrieving text from the clipboard, Source Printer will present a 'Clipboard Format' dialog box asking you which programming language to assume for the Clipboard.

Click on the radio button corresponding to your particular programming language.  If you have set up User Defined Comments, you can select that, or, if you just want to print the Clipboard without regard to comments, you can select 'Generic Text / Other'.  In the latter case, the Clipboard will be printed entirely with the font you have chosen for 'normal' un-commented code.

Enter a short description of the clip if desired.  This description will appear in the file list, and well be used in place of a file name in any Header or Footer.  If you do not enter a description, the character string "From Clipboard" will be used.

When you close the Get Clip dialog box, a Clipboard item is added to the file list. When an item from the Clipboard is added to the file list, the file list will display the item as follows:

For the purposes of display in the file list only, the string "Rtrvd" (short for 'retrieved') is appended to the pseudo file name, along with the time it was retrieved.

Once the Clip has been printed, the "Rtrvd" is replaced with "Prntd" (short for 'printed'), and the retrieved time is replaced with the time the clip was printed.

Because it is possible for another application to change the contents of the Clipboard between the time when you retrieve a clip and the time when you want to print it, Source Printer runs a simple check just before it actually prints to see if this has happened. If the contents have changed, Source Printer issues a warning.  If you choose to continue, the Get Clip dialog box will pop up again so you can tell Source Printer what these new Clipboard contents are.  Source Printer will then start printing the clip.

At print time, Source Printer prints only the current contents of the Windows' Clipboard.  Therefore, only one clipboard item can appear in the file list at any one time.  In the case of Clipboard items, it is not necessary to clear the file list before retrieving a clip.  If there is a clip already in the file list, it will be replaced.

Tip:

When selecting sections of text for copying, always begin the selection from the beginning (far left edge) of the first line.  This will ensure that indentations are preserved.  For example:

The X's are white space.

The bold facing is what you might select.

Do this:

XXXXXXThis is some text to copy.

XXXXXXThis is some more text.

XXXXXXXXXThis is some more text.

Not this:

XXXXXXThis is some text to copy.

XXXXXXThis is some more text.

XXXXXXXXXThis is some more text.

See also:

   Contents


Print Setup

Upon startup, Source Printer sets itself up to print to the 'default printer' defined by Windows' Control Panel.

You can change the printer that Source Printer will print to.  From Source Printer's main menu, choose File - Print Setup to display a dialog box showing your current printer and the print quality.

Clicking the Setup button brings up a second dialog box in which you can select a different installed printer, change the orientation, or change the paper size.

Note that the current orientation setting is always shown in Source Printer's main window.

Depending on the selected printer and the printer driver, there may also be an Options button on the second dialog box.  Clicking the Options dialog generally brings up a printer-specific dialog box where you define more detailed printer configuration information.

Note:

Once Source Printer is running, changing the Window's default printer by using Window's Control Panel will not affect the current choice of printer in Source Printer.   To use the new 'Window's' default printer, you must manually select it from Source Printer's Print Setup option on the main menu.

Tip:

Some manufacturers of fan-folded computer paper actually produce products that do not match the 'standard form sizes' exactly.  (If you order 8-1/2" x 11" paper, you may get 8-1/2 x 11.02").  This may be due to poor quality assurance or technical difficulties.  Regardless, if your paper length is even a fraction of an inch too short or too long, your top and bottom margins quickly migrate disagreeably close to the paper perforation after printing only a few pages.  This is not a fault of Windows, but of the paper manufacturer.

Fortunately, Windows usually provides an often overlooked option on its Printer Setup dialogs.  Namely, the "User Defined Size" option under Paper Size.  By carefully measuring the actual dimensions of your paper, you can enter those values here (to the nearest .01" or .1 mm).  Note that you must use Control Panel to actually set the User Defined Size.  Source Printer will recognize your user defined size, but does not allow you to change the actual numbers.

Tip:

Using Control Panel, you can "Connect" almost any printer to FILE rather than LPT1: or another port.  You can then select this printer from Source Printer.  When you print, a dialog box will come up asking you for a file name.  Type a file name, and Source Printer will print a binary image to that file (and not to whatever physical printer you have).  Note that the information that is written to the file is raw printer data, not ASCII text.

You can later print this file from DOS by typing something like this:

   COPY   /b   MYFILE.BIN   LPT1:

where MYFILE.BIN is the file created above, LPT1: is whatever port your printer is physically connected to, and the /b tells DOS that it is going to copy binary information.  Don't forget to type the /b.

This is particularly useful for those who have access to a laser printer, but who don't have the laser printer physically connected to their machine.

See also:

   Contents


Print

After you have selected at least one file to print, and after you have defined the character size, margins, tabstops, and any other options, press the Print button to start the printing process.  Source Printer will check your entries for any errors, and if all is well, will begin printing each file that you have selected into the File List.

A progress dialog box is displayed while each file is being processed, and you may press the Cancel button in this dialog box at any time to abort the processing of the current file.  If you press the Cancel button, and if there are other files waiting to be processed, you are given the further option to cancel the entire print job or continue printing the rest of the files.

See also:

   Contents


Formatting

From the Format menu item, you can select:

Fonts to specify different fonts to use for commented and un-commented code or to adjust line spacing and character spacing

Header/Footer to print file names, dates, and/or page numbers

Margins/Tabs to specify left, top, right, and bottom margins and to specify tab stops

See Also

   Contents


Selecting Fonts

The key to Source Printer is its ability to highlight comments in your source code by printing them with a font that is different  than the font used to print the main body of your code.   Depending on the specific capabilities of your printer and the particular fonts installed on your system, each font can have its own typeface, size, weight, or style.

To review the currently selected fonts, choose Format - Fonts from the main menu.  This brings up the 'Font Summary' dialog box.

To change one of the fonts, click  the 'Change' button opposite the font you wish to change.  This brings up the 'Change Font' dialog box, which will list all the  fonts installed on your system.  (If you checked the 'Allow Fixed Pitch Only' box in the 'Font Summary' dialog, only fixed pitch fonts will be listed).

From the 'Change Font' dialog, select a new typeface, size, weight, and/or style.  Press OK to return to the 'Font Summary' dialog box.

When you press OK to close the 'Font Summary' dialog, and if you have checked the 'Allow Fixed Pitch Only' box, Source Printer double checks to see if both of your current fonts are fixed pitch.  If they are not, a warning is issued.  If you intend for one or both of the fonts to be non-fixed, click OK to close the dialog box.  Otherwise, click Cancel to return to the 'Font Summary' dialog.

Note that in addition to setting the point size for each font, you can also change the intercharacter spacing and the line spacing .

Tip:

If your source code uses a columnar format (like assembly language, Fortran, or Cobol), read Fixed vs. Variable Pitch Fonts.

See Also:

   Contents

   Fixed vs Variable Pitch Fonts

   Line Spacing

   Character Spacing


Fixed vs Variable Pitch Fonts

Font pitch relates to the width of the individual characters in a font, or rather, the width of an imaginary bounding rectangle designed around each character (the character cell).  The print head moves one cell-width before printing the next character.

In a fixed pitch font, the cell width of each character is the same.  Printing three lower case i's (iii) takes up the same amount of space as printing three uppercase W's (WWW).

In a variable (or proportional) pitch font, the cell widths vary with the size of the actual character.  Printing three lower case i's (iii) takes up much less room than printing three uppercase W's (WWW).

Formatting source code on the printed page is easy with a fixed pitch font.  However, variable pitch fonts are more of a challenge.

Source Printer properly aligns and preserves any amount of white space at the start of a line - even if you specify variable-pitch fonts.  For example, if you use 'if', 'for', or 'while' loops and you like to indent the conditional code in your program editor, the conditional code will be printed just as it appears in your editor (see Tab Stops).

However, because only the white space at the start of a line is properly aligned, source code written in a columnar format (like assembly language , Fortran, and Cobol)  will look ugly if printed with a variable-pitch font.  In these cases, simply mark the 'Fixed Pitch Only' box on the Fonts dialog box.  This will ensure that you select only fixed pitch fonts.

The following examples illustrate:

The following snippet will print fine with either a fixed or variable pitch font.

for (i=0; i<20; i++) {

     Do something

     Do something else

     if (This is true)

          Do this as well

     }

Here's what assembly language might look like with a variable pitch font. (bad)

Label:

     lodsb

     or      al,al    ; comment

     jz      Done     ; comment

     stosb            ; comment

     loop    ToLoop   ; comment

(Here's what assembly language looks like with a fixed pitch font) (good)

Label:

     lodsb

     or      al,al    ; comment

     jz      Done     ; comment

     stosb            ; comment

     loop    ToLoop   ; comment

See Also:

   Contents

   Selecting Fonts

   Line Spacing

   Character Spacing

   Margins

   Tabstops


About The Unregistered Version of Source Printer

Prices below will be valid until 1 July 1995.

I thought long and hard about whether or not to distribute unregistered trial copies of Source Printer in a fully functional form.  In the end, for purely selfish reasons, I decided not to.  Your interest in Source Printer probably means you are a programmer, and so perhaps you can relate to the many person-hours involved in writing something like Source Printer.

Instead, I have tried to make the basic registration fee very reasonable, and I hope you agree that US$ 10.00 is reasonable.

In its unregistered form, the only limitation is that you cannot print more than five pages from each source code file.

You can of course break your big files up into many five page files, and print them that way, but I’m sort of hoping you’ll get tired of that.

On the other hand, if you only dabble with programming and your source files are generally less than five pages, then the  unregistered version will serve you well, and you are welcome to continue using it for as long as you like (though you'll have to put up with the beg notices).

Upon registration, you will be sent a personal registration number that will unlock the five page limitation.  The same registration number will work with all future versions.

Please read:

How To Register

Order Form

Disclaimer - Agreement

Contacting the Author

Upgrading

Distributing Source Printer

How to Report Problems

Contents


Line Spacing

To adjust the line spacing, select Format - Fonts from the main menu to bring up the Fonts dialog box.  Enter a line spacing factor in the Line Spacing edit box.

To use the default (single) line spacing for whatever fonts are selected, enter 1.0 in the Line Spacing edit box.  To print double spaced, enter 2.0.  To print with 1-1/2 line spacing enter 1.5.  You can squeeze the lines closer together by entering a fraction less than 1.0.  Negative numbers are not allowed.

The same line spacing factor is used for both fonts (normal and commented code).   To determine how far down the page to start the current line, Source Printer multiplies the character height of the biggest character in the line by the line spacing factor.

For example, say the font for normal code is 1/8" high, and the font for commented code is 1/4" high.

If the line spacing factor is 3.0, and if the line about to be printed has no comments in it, the  line starts 3/8" below where the last line started.  However, if there are any comments in the line about to be printed, then the line will start 3/4" below where the last line started.

See Also:

   Contents

   Selecting Fonts

   Fixed vs Variable Pitch Fonts

   Character Spacing

   Margins

   Tabstops


Character Spacing

You can change the default spacing between characters by entering a number other than 1.0 in the 'Char Spacing' entry field.

The character spacing is fraction, which is used as a multiplier applied to the particular font's default character spacing.

Specifying a number smaller than 1.0 will squeeze the characters together.  This is useful if you want to maximize the number of characters you can print across the page.  Do not specify a number that is too small, or the characters will overlap each other when printed.

Alternatively, you can specify a number greater than 1.0 to spread the characters apart.

Changing the character spacing does not change the actual size of the characters, only the inter-character spacing.

Note:

Problems may occur with certain printer drivers (notably those for older laser printers) when the character spacing factor is not equal to 1.0.  The cause of this is unknown.  The problem usually manifests itself when printing a long document or many short ones.  On one particular machine (HP Laserjet IIP), the laser printer reports an HP Error number 41, which is an undefined error.  Print Manager will display a message suggesting the printer is off-line or out of paper.  It is believed the problem is related to either the Printer Timeout settings or printer memory, but this has not been resolved.  The easy fix is to use a character spacing factor of 1.0.  This problem has not been experienced with any dot matrix printers.

See Also:

   Contents

   Selecting Fonts

   Fixed vs Variable Pitch Fonts

   Line Spacing

   Margins

   Tabstops


Margins
Margins and Tabs

Choose Format - Margins/Tabs to bring up the 'Margins' dialog box.

Enter values for the left, top, right, and bottom margins in the boxes provided.

Your current printer, paper orientation, and printer driver define minimum allowable margins, and these are shown to the right of the margin input boxes.  You must enter margins that are greater than or equal to the minimums shown.

See Tabstops for help setting tabs.

See also:

   Contents

   Units

   Selecting Fonts

   Fixed vs Variable Pitch Fonts

   Line Spacing

   Character Spacing

   Tabstops


Tabs
Tabstops

Choose Format - Margins/Tabs to bring up the 'Margins' dialog box.

Enter the number of characters between tabstops.

Many programmers indent blocks of code for readability.  Some programming editors allow you to define the width of tabstops used on the screen.  Source Printer works the same way when printing.

For example, assuming you use the Tab key to set your indents (as opposed to hitting the space bar one or more times) and assuming your Tabstop setting is 3, you printout might look something like this:

if (this is true)

   do this

else

   do that

With a Tabstop set to 10, the printout would look something like this:

if (this is true)

          do this

else

          do that

A Tabstop of 3 usually yields an attractive printout.

Note that Source Printer does not simply convert every tab character it encounters to ' Tabstop' number of spaces.  Rather, Tabstop sets up an invisible vertical grid on your paper with Tabstop number of characters between grid lines.  When Source Printer encounters a tab character, it moves all text following that tab to the next vertical grid line.  This allows nested blocks of indented code to line up properly.  In the case of Tabstop=3, this might involve moving the text 1, 2, or 3 'spaces' to the right.  This is how most word processors and programming editors work.

Even if you have chosen a font that would normally use proportional or variable-width spacing, or if you use a mixture of spaces and tabs to align text in your editor, Source Printer will still indent blocks correctly.  See Fixed vs. Variable Pitch Fonts.

See also:

   Contents

   Selecting Fonts

   Fixed vs Variable Pitch Fonts

   Line Spacing

   Character Spacing

   Margins


Specifying a Header and/or Footer

You can tell Source Printer to include a header and/or footer on each page.  The items you can include in the header or footer are the file name, current date or file date, and the page number.  Each entry in the header or footer can be left justified, centered, or right justified.  A separator (horizontal line) can be drawn below the header or above the footer to separate these from the main body of the printout.

To define a header or footer, select Format - Header/Footer from the main menu.  This brings up the 'Headers and Footers' dialog box.

To include an item in a header of footer, turn on the check in the box next to the item and then select a horizontal justification ('Left', 'Center', or 'Right').  Specify 'Top' to put the item in a header or 'Bottom' to put the item in a footer.

To draw a horizontal separator, check 'Header separator' and/or 'Footer separator'.

If two or three items in a header (or footer) have the same horizontal justification, then Source Printer prints each item on a separate line.  For example, if you specify that a right justified filename and a right justified page number should appear in the header, two lines will be allocated for the header, and the page number will be printed directly below the file name.  Similarly, if you specify a header with a left justified filename, a center justified page number, and a right justified date, then the entire header will be printed on one line.

To specify a header or footer, choose Options from the main menu and select Header/Footer.

See also

   Contents


Options

User Defined Comments

To define comment formats for a language not supported by Source Printer or to override the default format for one of the supported languages.

Preferences

To control the visibility of Source Printer on the desktop and to control whether the file list is automatically cleared when new files are selected.

See also:

Contents


User Defined Comments

See About Comments In General for a discussion of some of the terminology used here.

If you use a language that is not supported by Source Printer, or if Source Printer assumes different comment formats than your compiler, try specifying a User Defined Comment format.

Selecting User Defined Comments under Options from the main menu brings up the User Defined Comments dialog box.

The User Defined Comments dialog box allows you to assign one set of block comment identifiers and one single line comment identifier to files with an extension that you specify.  Some languages do not use this type of structure for comments, so User Defined Comments will not apply in those cases.

To cause Source Printer to recognize your new comment format, be sure to turn on the 'Activate User Defined Comments' checkbox.

If you specify one of the extensions that are already supported,  your custom comment identifiers will override the built-in comment format for that type of file only if you also check the 'Activate User Defined Comments' box.

Warning:

If you override the comment format for one of the languages already supported, don't forget that you have done this.  If you later want to revert to the built-in format, simply un-check the Activate User Defined Comments checkbox.

Enter any legal DOS file extension in the File Extension box (wild card characters are allowed).  It is not necessary to type a period before the extension.  You may leave this box blank to specify files without an extension.

When you later print a file with the extension you specify here, comments in it will be identified according to your other entries in this dialog box.

Single line comment identifiers can be from 1 to 9 characters long.  You should choose single line comment identifiers carefully to avoid conflicts with your source code.  You can leave the Single-line Comment Identifier box empty if you do not want to use single-line comments.  If you plan to specify Block comment identifiers, then your single-line comment identifier should be different from the Start Block Comment and End Block Comment identifiers.

If you want to identify Block comments, enter a character string that signals the start of the block comment in the Start Block Comment box.  You then must enter a different character string in the End Block Comment box.  Again, you should choose your block comment identifiers carefully to avoid conflicts with the rest of your source code.  Block comment identifiers should not be the same as the single-line comment identifier.  Block comment identifiers can be from 1 to 9 characters long.

All comment identifiers are case sensitive and cannot contain spaces.

Note:

In some languages (like Cobol and Fortran), the column in which a single line comment identifier occurs may be important.  However, User Defined Comments do not take into account column positions.

Note:

Only one set of user defined comments with their associated extension are defined at any one time.  For example,  if you have previously specified user defined comments for .XYZ files, and later specify user defined comments for .ABC files, Source Printer no longer knows anything about .XYZ files.  Note however that your user defined comments are saved when you exit Source Printer and will be available the next time you start Source Printer.

Tip:

If you print a lot of .TXT files, try specifying a User Defined Comment for the .TXT extension, but leave all the comment identifier boxes blank.  Don't forget to select the 'Activate User Defined Comments' box.

Example

See Also:

   About Comments In General

   Supported Languages and File Extensions

   Contents


Example - Custom Comments
Example - User Defined Comments

(Printout of NAME.DJM)

CSt

This is an example

of a block comment CEnd

This is a normal line

This line has a $$ single comment character in it

This is normal

See Also:

   User Defined Comments

   About Comments In General

   Supported Languages and File Extensions

   Contents


Preferences

To bring up the Preferences dialog box, select Options-Preferences from the main menu.

Always fully visible...

You can control whether Source Printer's window or icon can be hidden by other programs that are running.  When using Source Printer's drag and drop feature to select files, you may wish to turn one or both of the check boxes in this dialog box on.

To drag files from File Manager to Source Printer, both File Manager and Source Printer must  be visible on the screen at the same time.  Without the 'Always full visible' options, this might require some time consuming rearranging of your desktop, which defeats the convenience of dragging and dropping.

However, turning on  Always fully visible 'Whenever minimized' allow Source Printer's icon to float on top of File Manager even when File Manager is the active task.

Similarly, checking the 'Whenever maximized' box will allow Source Printer's main window to remain visible at all times.

Clear File List Automatically

If you set Clear File List Automatically in the Options-Preferences dialog box, then the file list will be cleared every time you add anything new to it.  In this case, the Clear File List button on the main window will be disabled.

You may find it more useful not to set the Clear File List Automatically option.  This way, files will be appended to the file list until you press the Clear File List button.  Unless you enter file names at the command line, this is the only way to print a batch of files from more than one subdirectory.

See also

   The File List

   Using Drag and Drop

   Contents


Visibility

Determines whether Source Printer remains visible at all times, regardless of whether it is the active application or not

   Contents


Units

Determines the units of measurement when specifying margins.  Choose between inches and millimeters.

   Margins

   Contents


Context Sensitive Help

You can get context sensitive help at any time by pressing F1.  This applies to whether you are in the main menu, a dialog box, or if Source Printer has presented you with a special message box.

   Contents


Clearing the File List

If you set Clear File List Automatically in the Options-Preferences dialog box, then the file list will be cleared every time you add anything new to it.  In this case, the 'Clear File List Automatically' button on the main window will be disabled.

You may find it more useful not to set the Clear File List Automatically option.  This way, files will be appended to the file list until you press the Clear File List button.  Unless you enter file names at the command line, this is the only way to print a batch of files from more than one subdirectory.

See Also:

   The File List

   Contents


About Source Printer

Source Printer - Copyright 1994 David J. Mikelson

The latest version of Source Printer as of 17 September 1994 is version 1.0, and is distributed as SRCPRN10.ZIP.

   Contents


Known Problems
Trouble Shooting, Known Problems, and Limitations

If the following does not help, see How To Report Problems.

Symptom:

You are trying to run Source Printer from either File Manager or Program Manager and:

File Manager throws up a message box saying something like 'File Manager cannot find the specified file (or one of its components) ...'

Program Manager throws up a message box saying something like 'File Error - cannot find BWCC.DLL...' followed by a message box saying something like 'Cannot find file SRCPRN10.EXE or one of its components...'.

Discussion:

See the discussion regarding the file BWCC.DLL under Installing Source Printer.

Symptom:

You have hard page breaks in your source code, and Source Printer is not breaking pages where you expect.

Discussion:

Source Printer does not recognize hard page breaks (ASCII 12 - form feed).  If it encounters one, it warns you (once per file) and will print a single space character (ASCII 32) in its place.

Symptom:

Sections of code that are not comments are printed bold faced.

Discussion:

This may be caused by improperly mixing single line comment identifiers and block comment identifiers on the same line.  This is allowed, but must be done with caution.  See About Comments In General.

This may also be caused if you have character strings (double quotes) in your code that enclose comment identifiers.  In general, Source Printer handles mixing double quotes and comment identifiers correctly (it ignores comment identifiers enclosed in double quotes).   However, this logic is not implemented when printing Assembler , Fortran, Cobol, or when using User Defined Comments.  See About Comments In General for examples of how comment identifiers and double quotes work together.

Symptom:

Code is printed all bold or all regular even though different font weights were specified.

Discussion:

One problem that may arise (and that will not become apparent until you actually print the document)  is that the entire document  is printed in a single weight (either all bold or all normal).  This sometimes happens if you have chosen very small font sizes.  The printer driver is unable to make different bold and normal characters from the limited number of dots available to it in a such a small character cell.  There is no fix for this other than to specify slightly larger fonts.

Symptom:

Some laser printers fail in middle of print job.

Print Manager reports printer offline or out of paper.

Discussion:

See Font Related Printer Errors

Symptom:

Errors occur when printing long files.

Discussion:

This may be caused if you are short of disk space.  When Source Printer prints through Print Manager, Print Manager creates a temporary 'spooler file' for each page.  It generally stores these files in your TEMP subdirectory.  Some of the spooler files can be quite large (100 - 200 K per page).  In theory, if your hard disk ever fills up during this process, Print Manager is supposed to intelligently pause, print the spooler files, delete the spooler files, and then resume talking to Source Printer.  The code to do this has been incorporated into Source Printer, but has not been tested.  Also see Font Related Printer Errors.

Symptom:

You are printing a source file from one of the supported languages, but your comments are not being interpreted correctly.

Discussion:

Make sure you have not overridden that file extension with a User Defined Comment.

Otherwise, verify that you can compile the program without errors to eliminate the possibility that you have forgotten to close a block comment somewhere.

Symptom:

Your printer is connected.  Source Printer indicates that it has printed 100% of the file, but the printer either prints garbage or doesn't print at all.

Discussion:

When Source Printer first starts, it sets itself up to print to whatever printer you have defined as your 'default' with Window's Control Panel.

Once Source Printer is running, changing the Window's default printer by using Window's Control Panel will not affect the current choice of printer in Source Printer.   To use the new 'Window's' default printer, you must manually select it from Source Printer's Print Setup option on the main menu.

Symptom:

When using fan-folded paper, Source Printer doesn't seem to be advancing each page by the correct amount.

Discussion:

Some manufacturers of fan-folded computer paper actually produce products that do not match the 'standard form sizes' exactly.  (If you order 8-1/2" x 11" paper, you may get 8-1/2 x 11.02").  This may be due to poor quality assurance or technical difficulties.  Regardless, if your paper length is even a fraction of an inch too short or too long, your top and bottom margins quickly migrate disagreeably close to the paper perforation after printing only a few pages.  This is not a fault of Windows, but of the paper manufacturer.

Fortunately, Windows usually provides an often overlooked option on its Printer Setup dialogs.  Namely, the "User Defined Size" option under Paper Size.  By carefully measuring the actual dimensions of your paper, you can enter those values here (to the nearest .01" or .1 mm).  Note that you must use Control Panel to actually set the User Defined Size.  Source Printer will recognize your user defined size, but does not allow you to change the actual numbers.

Symptom:

Indented blocks print correctly, but text in columns is jagged and does not line up.

Discussion:

This may happen when printing source code from languages which are distinctly columnar in nature.  These include Assembler in particular, and may also include Fortran and Cobol. You have probably specified  a variable pitch font.  See Fixed vs.Variable Pitch Fonts.

   Contents


C++ Source Code
C++ Source Code (.CPP)

Single line comments are identified by double forward slashes ( // ).

Block comments begin with  /*  and end with  */.

Block comments can include several lines and can be nested.

A single line comment can occur at the beginning or in the middle of a line.

Note that .H (include files) is one of the supported file extensions.

Following are examples of commenting supported in C++ source code.

// This is a single line comment at the beginning of a line

This  is a // single line comment in the middle of a line

This is a /* block comment */ in the middle of a line

This is a /* block comment

that carries over to a second line*/

This is /*

A nested /* comment

carrying over */  several */ lines

See also:

   Supported Languages

   About Comments In General

   Using The Clipboard

   Contents


Persistence of Vision Scene Files
Persistence of Vision Scene Files (.POV)

Single line comments are identified by double forward slashes ( // ).

Block comments begin with  /*  and end with  */.

Block comments can include several lines and can be nested.

A single line comment can occur at the beginning or in the middle of a line.

Note: .INC (POV include files) are not directly supported.  This is because Source Printer has reserved the .INC extension for Pascal include files.  However, you can easily specify a User Defined Comment to handle your .INC files.  Specify .INC as the file extension,  // as the single line comment identifier, /* as the start block comment identifier, and */ as the end block comment identifier.   Be sure to place a check in the 'Activate User Defined Comments' checkbox.  Your user defined .INC setting will override the default.

Following are examples of commenting supported in POV scene files.

// This is a single line comment at the beginning of a line

This  is a // single line comment in the middle of a line

This is a /* block comment */ in the middle of a line

This is a /* block comment

that carries over to a second line*/

This is /*

A nested /* comment

carrying over */  several */ lines

See also:

   Supported Languages

   About Comments In General

   Using The Clipboard

   Contents


Pascal Source Code
Pascal Source Code (.PAS)

There are no single line comments identifiers defined as such.

Block comments begin with  {  and end with  }.  These are 'curly brackets'.

Block comments can include several lines and can be nested.

Note: If your Pascal language uses parenthesis-asterisk (* and *)  instead of curly brackets to identify comments, see User Defined Comments.  Specify .PAS as the file extension, (* as the start block comment identifier, and *) as the end block comment identifier.  Leave the single line comment box empty.  Be sure to place a check in the 'Activate User Defined Comments' checkbox.  Your user defined .PAS setting will override the default.

Note that .INC (Pascal include files) is one of the supported file extensions.

Following are examples of commenting supported in Pascal source code:

This is normal {this is bold} then normal

This starts normal { Then has a comment

that wraps to the next line}

This is normal

{

This is a block

of comment lines

}

This is normal

{}

Normal

{

This is a {nested comment}

}

Normal

See also:

   Supported Languages

   About Comments In General

   Using The Clipboard

   Contents


Clipper Source Code
Clipper Source Code (.PRG)

Single line comments are identified by double forward slashes ( // ) or double ampersands (&&).

Block comments begin with  /*  and end with  */.

Block comments can include several lines and can be nested.

A single line comment can occur at the beginning or in the middle of a line.

Following are examples of commenting supported in Clipper source code.

// This is a single line comment at the beginning of a line

This  is a && single line comment in the middle of a line

This is a /* block comment */ in the middle of a line

This is a /* block comment

that carries over to a second line

*/

See also:

   Supported Languages

   About Comments In General

   Using The Clipboard

   Contents


Basic Source Code
Basic Source Code (.BAS)

Important: To print Basic code, you must 'save your file as text'.  Some Basic programming environments default to saving your Basic program in a tokenized (binary) format unless you tell it to do otherwise (often by appending ',a' at the end of the filename when saving).  Refer to your Basic manual.

When reading .BAS files, Source Printer checks that every characters is >= ASCII 32 and <ASCII 127 or either ASCII 9 (tab), ASCII 10 (line feed), ASCII 13 (carriage return), or ASCII 26 (EOF for some editors).  If a characters is found outwith this range, Source Printer will warn you and skip printing the file.

Note that, for all formats, Source Printer converts hard page breaks (ASCII 12 - form feed) to a single space character (ASCII 32).

Single line comments are identified by REM or an apostrophe.

The string REM must be upper-case and followed by at least one space.

Apostrophes need not be followed by a space.

Single line comments can occur at the beginning or in the middle of a line.

Block comments are not supported, but see User Defined Comments.

Following are examples of commenting in BASIC source code:

REM This entire line is commented

' This line is also entirely commented

REMARK This is not a remark, but REM this is

This line has a 'comment near the end

So does REM this line.

See also:

   Supported Languages

   About Comments In General

   Using The Clipboard

   Contents


C Source Code
C Source Code (.C)

Single line comments are identified by double forward slashes ( // ).

Block comments begin with  /*  and end with  */.

Block comments can include several lines and can be nested.

A single line comment can occur at the beginning or in the middle of a line.

Note that .H (include files) is one of the supported file extensions.

Following are examples of commenting supported in C source code.

// This is a single line comment at the beginning of a line

This  is a // single line comment in the middle of a line

This is a /* block comment */ in the middle of a line

This is a /* block comment

that carries over to a second line*/

This is /*

A nested /* comment

carrying over */  several */ lines

See also:

   Supported Languages

   About Comments In General

   Using The Clipboard

   Contents


Assembly Language Source Code
Assembly Language Source Code (.ASM)

Tip:

Because of the columnar nature of assembly language source code, you should specify fixed-pitch fonts so that all columns will line up.

Single line comments are identified by a semi-colon ( ; ).

The line continuation character (back slash) ( \ ) is also recognized.  Any text appearing after a back slash and on the same line will be treated as a comment.

The beginning of a block comment is identified by the uppercase directive COMMENT followed by one or more spaces and a user specified comment identifier.  The user specified comment identifier is a single character.  All text occurring after the user specified identifier up to the next occurrence of the user specified character is treated as a comment.

Each block comment must have its own COMMENT directive, even if the same user specified comment identifier is used.

COMMENT directives cannot be nested.

Any COMMENT directives following a single line comment identifier on the same line is ignored.

Following are examples of commenting supported in assembler source code.  Note the use of a fixed pitch font.

mov     ax,OFFSET v1    ; A comment

mov     ax,OFFSET v1    \ A comment

mov     ax,             \

           OFFSET v1    ; (line continuation above)

mov     ax,OFFSET v1    COMMENT * v1

                        is a thing

                        which takes a

                        long time to describe

                        in a comment.  The

                        asterisk is the

                        comment character *

mov     ax,OFFSET v1    ; See?

See also:

   Supported Languages

   About Comments In General

   Using The Clipboard

   Contents


C, C++ Include Files (.H)
C and C++ Include Files (.H)

Single line comments are identified by double forward slashes ( // ).

Block comments begin with  /*  and end with  */.

Block comments can include several lines and can be nested.

A single line comment can occur at the beginning or in the middle of a line.

Following are examples of commenting supported in C and C++ header files source code.

// This is a single line comment at the beginning of a line

This  is a // single line comment in the middle of a line

This is a /* block comment */ in the middle of a line

This is a /* block comment

that carries over to a second line*/

This is /*

A nested /* comment

carrying over */  several */ lines

See also:

   Supported Languages

   About Comments In General

   Using The Clipboard

   Contents


Cobol Source Code
Cobol Source Code (.CBL)

Tip:

Because of the columnar nature of some forms of Cobol source code, you may want to  specify fixed-pitch fonts to ensure that columns line up properly.

Comments in Cobol are determined by the character in column 7 (the first column is column 1).

An asterisk in column 7 identifies a commented line.

If column 7 contains the line continuation character ( - ), and if the previous line was a commented, then the continued line is also a comment.

In the examples below, an 'x' means a space character.

1234567890

xxx500xThis is not a comment

xxx510*This is a comment

xx1000xThis is not a comment

xx1005-This is a normal continuation

xx1010*This is a comment

xx1020-And this is a continued comment

See also:

   Supported Languages

   About Comments In General

   Using The Clipboard

   Contents


Fortran Source Code
Fortran Source Code (.FOR)

Tip:

Because of the columnar nature of some forms of Fortran source code, you may want to  specify fixed-pitch fonts to ensure that columns line up properly.

There are no block comments as such in Fortran

The following all identify single line comments:

Any character except a space or tab in column 1.

An exclamation point in any column after column 6

A semi-colon in any column after column 6

Following are examples of comments in Fortran: ( x denotes a blank)

1234567890

      This is a statement

c     This is a comment

      This is a statement

      C Not a comment

C     Comment

      Statement

*     Comment

      Statement

"     Comment

      Statement

!     Comment

         !Comment

     !This is not a comment, but a continuation character

      This is a statement ! with a trailing comment

      This is a statement ; this is a comment

See also:

   Supported Languages

   About Comments In General

   Using The Clipboard

   Contents


Lisp Source Code
Lisp Source Code (.LSP)

Single line comments are identified by a semicolon.

There are no block comments.

A single line comment can occur at the beginning or in the middle of a line.

Following are examples of commenting supported in Lisp source code.

; This is a single line comment

This is ; also a single line comment

See also:

   Supported Languages

   About Comments In General

   Using The Clipboard

   Contents


Pascal Include Files
Pascal Include Files (.INC)

There are no single line comments identifiers defined as such.

Block comments begin with  {  and end with  }.  These are 'curly brackets'.

Block comments can include several lines and can be nested.

Note: If your Pascal language uses parenthesis-asterisk (* and *)  instead of curly brackets to identify comments, see User Defined Comments.  Specify .PAS as the file extension, (* as the start block comment identifier, and *) as the end block comment identifier.  Leave the single line comment box empty.  Be sure to place a check in the 'Activate User Defined Comments' checkbox.  Your user defined .PAS setting will override the default.

Note: If you are a user of the Persistence of Vision Ray Tracer, see .POV for a method to print your .INC files correctly.

Following are examples of commenting supported in Pascal include files:

This is normal {this is bold} then normal

This starts normal { Then has a comment

that wraps to the next line}

This is normal

{

This is a block

of comment lines

}

This is normal

{}

Normal

{

This is a {nested comment}

}

Normal

See also:

   Supported Languages

   About Comments In General

   Using The Clipboard

   Contents


Uninstalling Source Printer

Erase the following files from whatever subdirectory you installed Source Printer into.

SRCPRN10.EXE

SRCPRN10.HLP

SRCPRN10.INI

FINDBWCC.EXE

README.TXT

ORDERFRM.TXT

If you created a Source Printer icon in Program Manager, delete that icon.

Source Printer came with a copy of BWCC.DLL, which should be in your main Windows system subdirectory (like C:\WINDOWS\SYSTEM).  However, there are many other programs that require BWCC.DLL to run, so, unless you are sure that no other programs you have require BWCC.DLL, do not delete this file.

Source Printer itself makes no changes to any of the Window's .INI files.  However, if you used File Manager to associate any file extensions with Source Printer, there may be references to Source Printer in some of your Windows .INI files.

See Also

   Contents


Page Breaks

Source Printer uses its own logic for breaking pages and does not recognize hard page breaks/form feeds (ASCII 0x0C) in the source file.  If Source Printer encounters one, it warns you that you are trying to print a file that contains form feed characters.  If you choose to continue, it converts all form feeds to space characters (ASCII 0x20).

Source Printer only posts a warning when it encounters the first form feed.  If you choose to continue, no other warnings are posted for that particular source file.

See Also:

   Contents


Exiting Source Printer

When you exit Source Printer, a message box will pop up asking you to confirm that you want to exit.  Press Cancel if you have changed your mind.

Source Printer saves all of your settings across sessions except those concerning the actual printer.  When Source Printer starts up, it always initializes itself to use whatever 'default printer' you have specified using Windows' Control Panel.  See Print Setup for more information.

Source Printer also saves the current contents of the file list.  However, if the file list contains a clip from the Clipboard, that clip is removed from the file list before the file list is saved.

The settings are saved in the SRCPRN10.INI file.  Most of the entries in SRCPRN10.INI are self explanatory, but it is best not to tamper with the SRCPRN10.INI file yourself.

See Also:

   Contents


Font Error

Source Printer has tried to access the Windows font management system and failed.  This is an unusual error, and the exact cause cannot be determined.

The recommended course of action is as follows:

Quit Source Printer.

Delete the SRCPRN10.INI file.

Restart Source Printer.

Deleting the SRCPRN10.INI file will force Source Printer to startup (the first time) with default values for all settings.  In particular, it should start up with a 'safe' font selection.

Try printing a document without changing any of  these default values.  If you still have problems, the only recourse is to read your Windows manual and ensure that your fonts are installed correctly in a location where Windows can find them.  This usually involves using the Windows Control Panel.

If  the document prints correctly, work your way through Source Printer's main menu and reset all of your old settings, as these will all have been reset to their default values.

Try selecting your desired fonts again.

See Also:

   Contents


Printer Information Error

Source Printer has tried to obtain information regarding the printer you have setup and failed.  This is an unusual error, and the exact cause cannot be determined.

The recommended course of action is as follows:

Quit Source Printer

Read your Windows manual and ensure that you have properly setup a valid default printer.  This usually involves using the Windows' Control Panel.

Restart Source Printer

Upon Startup, Source Printer always configures itself to access the Default Printer defined in the Windows Control Panel.

Try printing a document to this default printer.

See also:

   Contents


Contacting the Author

The easiest way to reach me is to leave me mail on Compuserve.

From Compuserve:

TO: DAVE MIKELSON,  100141,1006

From Internet:

To: 100141.1006@compuserve.com  (please pay the postage yourself)

Alternatively, write to:

Dave Mikelson

370 Vester Sted

Solvang, CA

93463

U.S.A.

Please read:

Upgrading

Distributing Source Printer

How to Report Problems

About the Unregistered Version

How To Register

Order Form

Disclaimer - Agreement

Contents


How To Report Problems

I do not promise to resolve all problems reported, but I will do my best.

Refer to Contacting the Author for where to send problem reports.

When reporting problems, please include the following information:

Description of the problem.

Is the problem reproducible?  If so, how?

What version of Windows are you using?

Do you work in Standard or Enhanced Mode?

What is the exact wording of any warnings or error messages you receive?

What type of printer are you using?  If you know the name and version of the printer driver, please supply that information as well.

What language were you trying to print?

Which fonts and related settings did you specify?

What resolution was your printer setup for?

What was the size, in bytes, of any source file that caused problems?

See also:

Troubleshooting and Known Problems

Font Related Printer Errors

Please read:

About the Unregistered Version

How To Register

Order Form

Disclaimer - Agreement

Contacting the Author

Upgrading

Distributing Source Printer

Contents


Source Printer Order Form

If ordering by check only, print this form by selecting 'File - Print Topic' from the menu bar (or print the ASCII file ORDERFRM.TXT from DOS).  Do not use this form to order through Compuserve or PsL.

Prices below will be valid until 1 July 1995.

Send this form with a check payable to Dave Mikelson to:

Dave Mikelson

370 Vester Sted

Solvang, CA

93463

U.S.A.

Payments must be made in US dollars drawn on a US bank, or you can send international postal money orders in US dollars.

Name: ______________________________________________________________

Company: ___________________________________________________________

Address: ____________________________________________________________

City: _______________________________________________________________

Country: _________________________Post Code: __________________________

Day Phone: ______________________ Eve.Phone __________________________

Electronic Mail Address: ________________________________________________

Where did you hear about or download Source Printer from: ____________________

Version of Source Printer You Have: ______________________________________

Source Printer Registration Number

(if upgrading and requesting disk)

(Name above must be exact registered name _______________________________

Costs:

Basic Registration (receive registration number only - no disk**):	US$ 10.00

Receive Upgrade disk**** (See Upgrading)	US$   2.00

California residents must add 7.25% sales tax.

Disk Size: High Density 3-1/2 (1.4 Mb)____          High Density 5-1/2 (1.2 Mb) ____

**    If you are registering for the first time, and if I have completed a later version than the one you have, I will send you a disk with the later version on it for no extra charge.

**** For registered users only who cannot download from Compuserve or other BBS.


How To Register

If you already have a registration number, see Entering Your Registration Data.

Prices below will be valid until 1 July 1995.

You can register in three ways:

1) By ordering through Compuserve's Shareware Registration service

Log onto Compuserve and GO SWREG.  Follow the prompts.  Source Printer's Compuserve registration ID is 3555.  When you register this way, you leave your Compuserve ID with SWREG.  Your registration is charged to your Compuserve account.  SWREG then notifies me via e-mail that you have registered.  I then e-mail you your registration number.

2) By sending me a check directly

See Order Form.

3) By credit card through PsL (Public (software) Library).  Note that you cannot upgrade through PsL.

See Ordering through PsL.

Ordering through Compuserve's SWREG service is the preferred method.  It is simpler for me and quicker for you.  But there is absolutely nothing wrong with the other two methods.

The basic registration fee for Source Printer is US$ 10.00 per copy.  However, there is an exception:

If you must order via credit card, then you must order through PsL (Public (software) Library).  In this case, I must ask a registration fee of US$15.00 to cover additional costs to me.  Upgrades are not available through PsL.

For the basic registration fee, you will be sent a registration number to unlock the copy you currently have.

In order to keep the cost down, I am not sending disks automatically.  Please strive to get the latest version from the Microsoft Windows Shareware Forum (GO WINSHARE) (Programming Related library) on Compuserve (see Upgrading)..

See also:

Order Form

Disclaimer - Agreement

Contacting the Author

Upgrading

Distributing Source Printer

How to Report Problems

About the Unregistered Version

Contents


Binary Files

Source Printer initially scans every character in a source file to ensure that each character is 'legal'.

Legal characters include:

Any character >= ASCII 32 and < ASCII 127

A tab character (ASCII 9)

A line feed character (ASCII 10)

A carriage return character (ASCII 13)

An EOF character (ASCII 26) (Ctrl-Z used in some Basic editors)

It later scans for hard page breaks (ASCII 12 - form feed), but issues a separate warning if it encounters one.

If any character is found outside the allowable range, Source Printer assumes you may have accidentally tried to print a binary file (non-text) and issues this warning.  Continuing may produce unpredictable results.

Note that binary files can include those output from fancy word processors that embed lots of control codes.  However, most programming editors output satisfactory text files, since the associated compiler usually requires this anyway.

Contents


Installing Source Printer

Make a subdirectory with a name of your choosing.  The following assumes you have chosen a subdirectory called SRCPRN.

Copy the following files to the SRCPRN subdirectory.  Do not copy the supplied version of BWCC.DLL yet (if you are extracting Source Printer from an archive, do not extract BWCC.DLL yet).

SRCPRN10.EXE

SRCPRN10.HLP

FINDBWCC.EXE

README.TXT

ORDERFRM.TXT

To run Source Printer, the file BWCC.DLL needs to be in your Windows system subdirectory (like C:\WINDOWS\SYSTEM).

(BWCC.DLL is part of Borland Windows Custom Controls - (C) Copyright 1991-1993 by Borland International.)

BWCC.DLL is a file that is used by many other Windows applications.  There are several versions of it around, and it is not uncommon for some automated installation programs to replace a newer version that you may have on your hard disk with an older version.  This usually doesn't cause any problems, but it is best to retain the latest version on your hard disk.

The version of BWCC.DLL shipped with this copy of Source Printer is BWCC.DLL v 2.00.  The file date is 21 October 1993 and the file size is 156,544 bytes. As far as I can tell, this is the latest version as of 17 September 1994.

I have included a little utility called FINDBWCC.EXE that you may want to run before copying the version of BWCC.DLL that comes with Source Printer to your hard disk. This is a Windows program that can be run by double clicking on it in File Manager, or by selecting File - Run from Program Manager.  (Make sure you have not accidentally extracted the version of BWCC.DLL that came with Source Printer to the same directory that FINDBWCC.EXE is in, or FINDBWCC.EXE will find only that version, and that is not what we want to do).

If you run FINDBWCC.EXE and BWCC.DLL cannot be found:

File Manager will throw up a message box saying something like 'File Manager cannot find the specified file (or one of its components) ...'

Program Manager will throw up a message box saying something like 'File Error - cannot find BWCC.DLL...' followed by a message box saying something like 'Cannot find file FINDBWCC.EXE or one of its components...'.

In either of these cases, it means you do not have BWCC.DLL on your hard disk (where Windows can find it).  So, you should now proceed to copy the version of BWCC.DLL that is supplied with Source Printer to your Windows system subdirectory (like C:\WINDOWS\SYSTEM).

If you run FINDBWCC.EXE and a copy of BWCC.DLL was found, FINDBWCC throws up a message box telling you what version of BWCC.DLL was found.

If the version reported by FINDBWCC.EXE is less than 2.00, then you should now proceed to copy the version of BWCC.DLL that is supplied with Source Printer to your Windows system subdirectory (like C:\WINDOWS\SYSTEM).  You should also ensure that this is the only version on your hard disk.  For example, if you also have BWCC.DLL in your C:\WINDOWS subdirectory, you should delete or rename that copy.

If FINDBWCC.EXE reports a version of BWCC.DLL greater than or equal to 2.00, then do not copy the version of BWCC.DLL that is supplied with Source Printer to your hard disk.

When Source Printer is run for the first time, it will create a file called SRCPRN10.INI in Source Printer's subdirectory.  This file is used on subsequent startups to set various parameters to whatever they were when you last exited Source Printer (like fonts, margins, preferences, etc.).  The initial SRCPRN10.INI file that is created when Source Printer is first run contains reasonable defaults.

The installation of Source Printer is now complete.  If desired, you can create a new group or add Source Printer to an existing group by using the normal File Manager's drag and drop facilities or Program Manager's File - New - Group/Item commands.

See also:

Quick Start

Uninstalling

Contents


Ordering Through PsL

Use PsL only if you must order by credit card.

Upgrades are not available through PsL (see Upgrading).

PsL takes orders only.  Any questions about the status of the order, refunds, registration options, product details, technical support, volume discounts, dealer pricing, site licenses, etc. must be directed:

By post, to:

Dave Mikelson

370 Vester Sted

Solvang, CA

93463

U.S.A.

or From Compuserve to:

TO: DAVE MIKELSON,  100141,1006

or From Internet:

To: 100141.1006@compuserve.com

If you order through PsL, the registration fee is US$ 15.00, not US$ 10.00.  This is because there are additional costs to me.

Note that you can register for only $US 10.00 if you use Compuserve's shareware registration service (GO SWREG) (see How to Register) or if you send a check directly to me (see Order Form).

Source Printer's PsL Product ID is 11599.

PsL is short for 'Public (software) Library'.

CREDIT CARD ORDERS ONLY

You can order with MC, Visa, Amex, or Discovery from Public (software) Library by calling 800-2424-PsL or 713-524-6394 or by FAX to 713-524-6398 or by CIS Email to 71355,470.  You can also mail credit card orders to PsL at P.O. Box 35705, Houston, Texas, 77235-5705.

THE ABOVE NUMBERS ARE FOR ORDERS ONLY

Any questions about the status of the shipment of the order, refunds, registration options, product details, technical support, volume discounts, dealer pricing, site licenses, etc. must be directed to the author's (Dave Mikelson) contacts above.

PsL will notify me the day of your order, and I will dispatch your Source Printer registration number directly to you.

Once again, if you have a have a Compuserve account already, use GO SWREG instead of PsL and save yourself US$ 5.00.

See also:

How To Register

Order Form

Disclaimer - Agreement

Contacting the Author

Upgrading

Distributing Source Printer

How to Report Problems

About the Unregistered Version

Contents